import { App, Component } from "vue";

interface FileType {
  [key: string]: Component;
}

// 导入 globComponents 下面的 所有 .vue文件
const files: Record<string, FileType> = import.meta.globEager(
  "../components/origins/*.vue"
);
const components: FileType = {};
Object.keys(files).forEach((key) => {
  const nameMatch = key.match(/^\.\.\/components\/origins\/(.+)\.vue/);
  // console.log(nameMatch);
  if (!nameMatch) return;
  // // 如果页面以Index命名，则使用父文件夹作为name
  // const indexMatch = nameMatch[1].match(/(.*)\/Index$/i);
  // let name = indexMatch ? indexMatch[1] : nameMatch[1];
  // [name] = name.split("/").splice(-1);
  components[nameMatch[1]] = files[key];
});

export default (app: App): void => {
  // 因为通过 import.meta.globEager 返回的列表不能迭代所以直接使用 Object.keys 拿到 key 遍历
  const origins: string[] = [];
  Object.keys(files).forEach((c: string) => {
    const component = files[c]?.default;
    origins.push(component.name as string);
    // 挂载全局控件
    app.component(component.name as string, component);
  });
  app.config.globalProperties.$ORIGINS = origins;
};
